Control system



April 7, 1964 Yu cHl Ho ETAL CONTROL SYSTEM 5 Sheets-Sheet .l

Filed Dec. 8, 1960 April 7, 1964 YU cHl Ho ETAL CONTROL SYSTEM 3 Sheets-Sheet 2 Filed Dec. 8, 1960 FEED RATE X-AXIS SIGN ("I Y-AXIS SIGN Z-AXIS SIGNI-I END OF BLOCK FEED RATE SIGN I+) CLOCKWISE SIGN I+) Y-AXIS IN V EN TOR.

YU CHI HO EWELL CALVIN JOHNSON BYJOHN LACHLAN MCKELVIE SIGN (+I END OF BLOCK ATTORNEY April 7, 1964 Yu cHl Ho ETAL 3,128,374

CONTROL SYSTEM Filed Deo. 8, 1960 3 Sheets-Sheet 3 a |'f l /1 l r l r l l l www United States Patent O 3,128,374 CONTROL SYSTEM Yu Chi Ho, Boston, Mass., and Ewell Calvin Johnson and John Lachlan McKeivie, Royal Oak, Mich.,

assignors to The Bendix Corporation, Southfield, Mich.,

a corporation of Deiaware Filed Dec. 8, Het), Ser. No. 74,687 18 Claims. (Cl. 23S- 151) This invention relates to an electronic position control system and more particularly to a programmed, digital contouring control system for machine tools.

Electronic systems which receive numerical data and act to control the position of an output device in accordance with that data are well known. Such systems are commonly used to control the motion of the operating parts of machine tools through continuous paths in order to produce parts which are represented by the numerical data provided to the system. In one type the numerical data is introduced to the control system in the form of punched or magnetic tape. The first unit of the system, termed the controller, generates a series of electrical pulses of uniform amplitude and length at various intervals in accordance with instructions contained on the tape. These pulses are then introduced into the second unit of the system, a servo-mechanism which produces a discrete movement of a mechanical output device, such as a machine tool lead screw, for each pulse which is received. The number of pulses received by the servomechanism determines the total distance through which the cutting head moves, while the rate of pulse introduction determines the rate of cutting head movement. The tape may carry several information channels, each of which acts through a separate servo-mechanism to control the motion of the machine part along a different axis. The resultant movement of the cutting head or controlled part is the algebraic sum of the component vmovements as generated by the various servo-mechanisms.

Alternatively, rather than being fed directly to the servo-mechanism, the pulse output of the controller may be recorded on punched or magnetic tape for subsequent use in connection with the servo-mechanism.

In such systems of this general nature, the numerical information contained on the tape which is introduced to the control system commonly takes the form of the distances between a series of points measured along chosen coordinates. The control system then operates to move the part through a series of straight lines connecting these points. Alternatively, the information may represent the coordinates of the end points of a curve such as a circle with respect to its center. Then the control system must direct the servo-mechanism so as to generate this curve between these end points.

The present invention relates to a system of this type. One aspect of the novelty of the present invention lies in the method in which the numerical data which is introduced to the system is operated on by the controller to provide a series of output pulses which are so timed with respect to one another that the servo-mechanisms associated with the system move in the directions commanded by the data at rates commanded by the data. The present invention also presents novel aspects in the manner in which the pulse producing unit combines with the data preparation unit and servo-mechanisms, in the manner in which the numerical data may be presented to the pulse producing unit, and in the form that the numerical data takes.

In a preferred embodiment of the invention, which will be subsequently described in detail, the information is introduced to the control system on a punched tape 'containing lines of binarycodeddecimal information. This 3,128,374 Patented Apr. 7, 1964 ice information includes coordinate distances between successive points on a path to be described, the nature of a path, i.e., circular or straight, and the rate at which the part is to be cut.

The controller itself includes an adder and a number of serial recirculating delay line registers and static registers. The information from the tape is rst converted to straight binary form by a series of operations involving the adder. The information relating to the coordinates of the end points of motion and the feed rate are then admitted to various of the recirculating registers and the information relating to the nature of the line between the end points is admitted to a static electronic register. The information is retained in this position until the control unit has completely utilized the previous information which was fed to it. The newly admitted information is then advanced to other recirculating and static registers wherein it is operative with respect to the active circuitry.

At this point, for a block of information representing a straight line cut, the number indicating the desired feed rate is repeatedly added into a section of one of the other delay line registers which was initially empty. Each time the contents of this latter register'overllow (no more than once for each addition), a command signal is generated which actuates the control to add the coordinate distances of the end points of the desired motion into another section of this recirculating delay line register which was also initially empty. These coordinate distances for linear motion will hereinafter be termed linear command numbers. Since the rate of overflow of the feed rate addition product from its register section is dependent upon the magnitude of the feed rate number, the additions of the linear command numbers occur at rates which are a function of the feed rate number.

These overflow or carry pulses may be simply defined as ls which are generated from the most significant stage of the register and would be carried to the next higher stage if there were one. Similarly, the overflows of the register section into which the coordinate numbers are repeatedly added are utilized to generate the pulses which drive the servo-mechanisms. In the preferred embodiment described, the machine tool is controlled over three axes simultaneously and, therefore, three command numbers are repeatedly added to themselves. The rates of overflow from these product register sections bear the same ratios to one another as do the command numbers, so that three trains of pulses are developed, each having a rate of pulse occurrence proportional to the length of the path which must be covered to reach the end point along the axis it controls since the three command nurnbers bear this ratio to one another.

Since the rate of production of pulses in the three trains is proportional to the total distance which the tool must be moved along each of the three coordinates, and each pulse represents an incremental motion along a coordinate, a sufficient number of pulses to produce the necessary total movement dictated by the command numbers will have been produced for all three axes at the same time. Means are therefore provided in the controller for determining when a sufiicient number of pulses has been generated along all three axes to accomplish the commanded motion. This means makes use of the fact that when a binary number of n digits is added to itself 2n times, a number of carry ls equal to the number itself will have been generated from the most significant digit of the number during the addition process and at that time the first n least significant digits of the number will be 0. If the number added to itself is odd (having a l as its least significant digit) rather than even, this will be the first time in the addition process that these digits are all 0s simultaneously. Accordingly, means are straight line, the feed rate number is again repeatedly added to an initially empty register section in order to genenate a series of add signals which occur at a rate which is a function `of the feed rate number. The iirst of these add signals actuates the control to add the coordinates of the beginning point of the circular cut into initially empty sections of one of the delay line registers. In order to accomplish the constant change of slope which characterizes a circle, it is necessary that the rate of overow `of pulses from these product registers occur at sinusoidally varying rates. This is accomplished by modifying the numbers representing the initial coordinates of the circle cut each time an overflow pulse is produced from the registers to which these numbers are added into by adding or subtractiing a 1 from each of them. When a 1 is added to an initial coordinate number, it causes the overflow pulses to be generated proportionally faster; While subtracting -a l causes the overows to be produced proportionally slower. These modified initial coordinates then represent the `coordinates of the radins vector of the point of the circle being generated at any given instant. Means are provided for detecting when either of the coordinate numbers is reduced to 0. This is the equivalent of passing from one quadrant of the circle into the next and at that point the control acts to reverse the addition and subtracion process which is controlled in accordance with the basics of analytic geometry. The modified coordinates of the initial points of the circle are continually compared with the coordinates of the end points, and when both coordinates are equal, the cutting process is terminated. It should be noted that in order to obtain a proper rate of pulse production, the overows of the register which receives the X addition product are fed to the Y axis servo-mechanism and vice versa. The preferred embodiment of the invention makes a circular cut in two dimensions only.

The pulses which represent the overflows of the various coordinate addition registers for both linear and circular cuts are either channeled directly to the servo-mechanisms or to a circuit which acts to provide an output equal to an integral multiple of the number of pulses it receives in order to achieve a faster motion along the controlled axes without excessively burdening the previous digital circuitry with high pulse rates.

It is, therefore, an object of the present invention to provide `a digital control system which accepts data in numerical form and provides position control over the cutting t-ool of a machine in accordance with orders contained in numerical data.

Another object is to provide a device which accepts numerical :data in coded form and `which provides -a pulse train as its output; the number and timing of the pulses being varied in accordance with the information contained in the input data.

' A further object is to prov-ide a unit which produces pulse trains in accordance with numerical data which utilize recirculating delay line registers, whereby the economies of such devices may be utilized in continuons position control systems.

Another object is to provide a continuous position control system which will control the speed of several axes in such a manner as to make the resultant movement of a tool along such axes occur at specified rates.

A still further object is to provide means for generating a plurality of trains of pulses at rates which vary in accordance with particular number contained in the numerical data introduced into the system.

A further object is to provide a numerical control system wherein either linear or circular cuts may be provided as commanded by the control data.

Other objects, advantages `and applications of the present invention 'will 'be made apparent by the following detailed description of a preferred embodiment of the invention. The description makes reference tothe accompanying drawings in which:

FIGUR-E 1 is a block diagram of a preferred embodiment of the invention;

LEIGURE 2 represents a section of tape used in connection with the control; and

FIGURE 3 represents a schematic drawing relating to Vthe operation of the circular interpolation mode of the control.

Electronic Position Control System The structure and operation of the preferred embodiment of a control employing the present invention will be described in a general, functional manner. It should be understood that the preparation of specific digital circuitry for performing the functions which will be ascribed to the various units o-f the block diagram is within the ability of those skilled in the digital control tart. The present invention thus rlies in the systemic arrangements of units for performing certain functions and the nature of the functions which are thus performed.

Tape Formate A section of tape which is used to control the system to be described is illustrated in FIGURE 2 and generally indicated at 30. The section illustrated contains two blocks of information, the first of which, 32, contains complete instructions for the machine to cut a straight line between two three-dimensional end points. A second block of information 34 contains instructions for the machine to `cut a circular arc between two-dimensional end points.

vSuch a tape may be prepared on a typewriter-like device having a key representing each number or instruction to be coded on the tape. A machine of this typeis commercially available under the trademark Flexo- Writer and is manufactured by the Friden Calculating Machine Co. of San Leandro, California.

The tape has eight longitudinal columns or channels and an entire tnansverse line comprising one symbol from each of the channels is read at -a given time.

In the following description, the channels will be referred to rwith reference to their position in respect to the right edge of the tape. A punch mark in any of the eight data channels signifies a binary l while the absence of a punch mark indicates a binary 0.

A particular combination of ls and Os on a ttnansverse line may indicate the nature of the information contained on following lines, such as the required command number or distance motion along either the X, Y or Z axes or the feed rate at which a particular motion is to be executed or the sign or direction of a particular motion. Or, a line may represent yone decimal digit in one of the nurnbers.

In block 32, the information punched in line 36 indicates that the lines immediately following contain the feed rate number indicating the 1speed at which a motion is to be executed. Thus, the presence of holes in the second, third, fth, sixth, `and seventh channels from the right edge of the tape will always indicate that the following information is a vfeed rate nu-mber. Lines 38, `40, 42 and 44 indicate that number, each line providing one of its 'decimal digits in binary-coded-decirnal form. Thus, for the purposes of the code used, line 38 contains the number six, line 40 contains the number live, line 42 contain-s the number three, and line 44 indicates the numeral 0. Thus, the information in lines 36 through 44 indicate that the feed rate number is 6,530.

In a similar fashion, the remaining lines in block 32 indicate the length of the movement along the X, Y and Z axes necessary toI complete the straight line commanded by the block and the direction of that motion.

A block of information for linear interpolation preferably begins with the symbol for the address for the feed rate number followed by that number hereinafter referred to as FR. This is followed by the address for the length of the motion recorded on the X axis, then that number is given. The command numbers for the distances required along the Y and Z axes then follow. Each of these numbers, except FR, is preceded by a code for its sign, either positive or negative.

The command numbers indicating the required motion along the X, Y, and Z axes will hereafter be termed DX, Dy, and DZ and will be referred to as the linear command numbers.

A block of information for circular interpolation may also begin with the address for a feed rate number followed by that number. This feed rate number is prefixed by a plus or minus sign which indicates Whether the block is in a clockwise or counterclockwise direction. Next, the block of circular information contains the address for X followed by the X-components of the initial and final radius vectors of the circle to be cut. Each of these numbers is also prefixed by a plus or minus sign to indicate which quadrant it occupies. The Y address is then given followed by the Y-components of the initial and final radius vectors and their signs. The initial components of the radius vectors will be hereafter termed X1 and Y1 and the final values will be denominated Xf and Yf.

The tape is sensed by a commercially available reader, indicated by the numeral 30 in FIGURE l, which provides eight electrical outputs to an input logic section 32. These outputs represent the eight channels on a section of tape and the presence or absence of a particular voltage on any ofthe eight outputs represents the presence or absence of a hole or a binary 1, in the particular transverse line being scanned by the tape reader at that time.

The tape is advanced in the reader 30 so as to present the next transverse line for the readers examination upon receiving a signal from the tape reader control 34. The control 34 is provided with a manual start and stop switch 36 which may be used to initiate and override the automatic controls.

The tape reader control 34 also has an input from the general control logic device which controls the advance of the tape and an input from the logic section 32. The line from the input logic section acts to halt the operation of the reader if a parity error is noted on the tape. Channel 5 of the tape is punched only when the number of other punches in a transverse line is e'ven. The input logic section 32 includes circuitry for determining the total number of punches that the reader 30 senses in reading a transverse line. If the tape is correctly punched and the sensing head properly indicates the presence or absence of a punch, the number of punches, including the parity punch of channel 5, should be odd. If this is not the case, the signal is sent to the tape reader control 34 halting the operation of the reader so that the operator may inspect the device to determine the source of error.

Timing Section All the units of the control operate in a particular order which is determined by a timing section 3S. The section operates from a master clock 40 which constitutes a fixed frequency multivibrator. The clock provides clock pulses to all of the control circuitry. These pulses act as conditions precedent to all ofthe logical operations performed by the control. This is done by providing the occurrence of a clock pulse as the necessary condition for a change in the state of the flip-flops. In the detailed circuitry of the device, it is to be understood that all the hip-flops can only change state upon the occurrence of a clock pulse.

The clock pulses are provided to a timing generator 42 which indicates at what point in its predetermined repetitive cycle the control is in, and acts as a source of signals to actuate functions which should occur at such time.

The timing generator 42 broadly comprises an endless chain of 20 flip-flops connected so that successive elements in the chain change state on successive clock pulses. Thus, each element in the chain changes state once every 20th clock pulse. Each flip-flop provides an output when it changes state from the time when it changes state until the next elementary changes. These outputs are made available to the rest of the circuitry on 20 lines which are denoted T1, T2, T3, T20.

The T20 pulse is utilized to provide a signal to another endless chain of four flip-hops. Thus, each one of the second chain of four flip-hops goes high once during the time in which four T20 pulses have been generated, or once every clock pulses. The chain of four dip-flops provides outputs on one of four lines during the 20 clock pulses in which they are in a changed state. These outputs are provided on lines W1, W2, W3, and W4. The timing generator always provides outputs on one W line and on one T line. Any action in the associated control circuitry may be conditioned to occur at any particular time within a repetitive cycle of 80 pulses by using the appropriate W and T outputs as inputs to and gates which allow that action.

Input Logic Section The input logic section 32 performs three functions: (1) the reception of data from the tape reader 30 and the checking of the parity of that data; (2) the conversion of the data from binary-coded-decimal form to binary form; and (3) the storage of the information in binary form.

The input logic section 32 has inputs from the eight tape reading heads as well as from the timing generator as does all of the other control circuitry. The parity check is performed by feeding the eight inputs to separate an gates, each of which has as its other input a different one of the timing signals so that they are opened in sequence. The outputs of these and gates are fed to a flip-flop Which is reversed each time it receives an input. If a line across the tape has an odd number of punches, the flip-flop will always end up in a particular state. If it is in the incorrect state at the end of the parity determination, a signal is sent to the tape reader 34 halting operation of the control.

A second function of the input logic circuitry is to convert the information from the binary-coded-decimal form in which it is contained on the tape to a binary form suitable for use with the subsequent circuitry. It does this in connection with a serial binary input adder 44 which has input from the logic section 32 and provides output to the logic section.

Binary-coded-decimal numbers from the tape are converted to straight binary form in the following manner:

First, the sign of the number which immediately follows the address is read from the tape and stored in the proper position of a register as a 1 if the sign is negative, or a 0 if the sign is positive. This digit is not operated upon in the following processes.

The tape is coded so that the first decimal digit contained on the line following an address represents the numbers most significant digit. The input logic section first reads this number from the tape and stores it. It then senses the absence or presence of a second decimal digit of the number. If this second digit is present, the input logic section multiplies the rst digit by l0 by delaying it one clock pulse (the equivalent of a binary multiplication by 2), then delaying it by three clock pulses (the binary equivalent of a multiplication by 8), then adds these two products. It then adds the multiplied product to the second decimal digit. Next, the input logic section senses the presence of a third decimal digit on 7 the tape. If this is present, the previous sum is again multiplied by 10 and added to this third digit. This process continues until all of the digits on the tape have been exhausted as is indicated by the occurrence of another address.

The preferred yembodiment of the machine is designed to move in increments of .0002 inch. yEach pulse which the control unit sends to the servo-mechanism thus represents .0002 inch of motion. In order to convert the number on the tape, which is in units of inches, carried toa precision of Ifour places to the right of the decimal point and therefore always even, into units representing command pulses, it is necessary to divide the number by two. This is done by ignoring the least signiiicant'position of the number (which is always a zero) since it is an even binary number in the subsequent circuitry and thereby the number as if its zero position were shifted one point to the left. In order to identify this least significant position, a 1 .is entered therein and termed the manker pulse -since it is not treated as an actual digit by the subsequent circuitry. This lalso insures that the number will be odd so lthat this fact may be used to determine when a suricient number of command pulses have been generated as will be subsequently noted.

When a particular motion instruction has been prepared for -all three axes in this manner, the three numbers are then simultaneously shifted in their register until a l appears in the most significant bit position of the registers-not counting the sign bit position which is never shifted. Locating these command numbers lin the most significant ends of the lregisters enables subsequent circuitry to operate -in an efcient manner as will be describedr subsequently.

The .following example illustrates Ithe manner of conversion of the binary coded tape infomation to decimal form for the command numbers X=-.0026 and For the purposes of the example, it is assumed that the register contains only 10 bits.

The register which i-s to contain DX is:

1. Initially empty. O 0 0 0 0 0 O 0 0 2. Read sign bit, write a l in 1 0 0 0 0 0 0 O 0 0 most signiiieant bit position. 3. Read2=010into the registersleading 1 0 0 O 0 0 0 0 1 0 end, least sig-nificant bit first. 4. Multiply by (X10=X21X8 delay 1 0 O 0 0 0 0 1 0 0= 4 l and3 bit times and add). 1 0 0 0 0 1 0 0 0 0=16 1000010100= 5.Add6110. 1000000110=6 1000O110l0=26 6. Read and decodeYinsimilar fashion 0 0 0 1 1 1 0 1 1 0=+118=Y using the Dy: register. 7. Insert marker pulses in least signifi- 1 0 0 0 0 1 1 0 1 1=X cant bit position of both numbers. 0 0 0 1 1 l 0 1 1 1=Y Shift both numbers continuously until a 1 is located in the most significant number position neglecting the sign position.

X=100110110Q Y=0 111011100 4components of the initial radius vector of the circle are handled in the same manner as are the command numbers above.

The feed rate number lfor both linear and circular interpolation Iis read in and converted to binary yform in a similar manner; however, no marker pulse is written into the temporary feed storage register. This number is also not shifted in the registeras are the X, Y, and Z command numbers.

The final function of the input logic circuitry is to store the command numbers in binary form. This is done in two serial recirculating sonic delay line registers 48 and` 50 which are preferably of the magnostriction-wire type, and a static temporary storage register j52. The register 48 has as its duty to provide a temporary storage for the command numbersindicative of the total motion required along the X, Y, and Z axes (subsequently referred to as c if DX, -Dy, and Dz numbers) `for a linear cut, the numbers indicative of the initial coordiantes of a circular cut (X1 and Y1) and Ithe 'feed rate number :(termed FR with an appropriate subscript) tor both types of cuts. The lines 4S and '50 provide a delay of such length that pulses introduced to them at a given timing pulse emanate from their ends y timing pulse-s later. They thus retain tour lwords of twenty characters each.

The input logic introduces the words to linesy 48 and 50 in such an order that particular numerals emerge at particular times as indicated by the timing generator 42. The letters in the particular boxes on the registers 48 and S0 in FIGURE d indicate the normal order of emergence 'for a linear cut. Dy emerges during W1 time, Dz emerges during W2 time, FR during W3 time, and Dx during W4 time. The recirculating register 50 stores the Xf 4and the Yf numbers representingthe end points of the circular out for both temporary storage and active use. The vXf and Yf numbers are respectively stored in word times r1 a-nd 4 foruse in temporary storage and at word times 3 and 2 for active storage. The input logic directs the converted numbers to the proper section of the registers `48 and 50 through use of the addresses, which are read from the tape and statically stored dur-ing the readout and processing 4of the number that they preiix.

The nature of the block, 4that is lthe circular or linear interpolation sigmis stored in the static dip-Hop 52.

'Iihe input logic must thus accept an address or number from the tape reader, check its parity, store it if it is an address, or direct it to the register 48 or 50i at the appropraite point in the time cycle if it is a number after converting it yfrom binary-coded-decimal form to binary form. The contents of both the delay lines 48 and 50 recirculate through the input logic ysection 32 in order to provide the logic section with continuous access to its contents.

Active Storage As has been noted, the regis-ter 50` provides the active storage as well as temporary storage for the Xf and Y, numbers. It provides output to a comparator 54 which makes use of the active Xf and Yf numbers -in a manner which will be subsequently described.

In addition to being fed back to the input logic section 312, the contents of the register yt8- are fed to an and gate `56. This gate provides output to a third sonic delay line serial recirculating Iregister 58 of 80 characters in length. This ydelay line performs .the function of storing thev active DX, Dy, and DZ numbers, and the FR number. As is indicated on FIGURE 1, these are stored with vthe FR number in Wl word time, the Dy number in W3 word time, and the DZ number in W4 word time. It is to be noted that this order Idiffers from the order of storage in the register 48 -in that each of the numbers is advanced (or delayed) by two word times. This changel in storage is necessary tor the following reasons:

`During a circular cut, the DX and Dy numbers in the active line are altered by one number each time they emerge from the line in such a manner that they at all times represen-t the ydesired position of a cutting head with respect to the center of the circle being generated. This will be subsequently described in greater detail. Since the circular cut is halted when the actual position has reached the Xf and Yf numbers, it is necessary that the Xf and Yf numbers contained in the register 50i emanate lfrom that register during the same word times as do the DX and Dy numbers so that the two may be compared to detect coincidence.

Therefore, in order to place DX and Dy numbers in the register y58 in the proper sequence, the normal operation of the timing generator `42 is altered immediately after the transfer of theA information from the register 48 to the register '53 through `the gate 56. This alteration takesthe form of skipping the W3 and W4 times in that particular cycle and going directly to the next W1 time.

ing what was previously considered the W3 time is entered into the register 58 in what 'is then the W1 time. Simultaneously, the two numbers in the W1 and W4 time positions in the register 50 are transferred to the W3 and W2 time position-s and are thereby placed -in position for active storage.

The timing generator is controlled to perform .this shift by line 60 which connects it to the control logic box 62. The same box 62 also provides a second input to the and gate 56 through a line 64, which allows the information from the register 48 to be transferred to the register 58. At the time of transfer, the information from the static circular-linear storage register S2 is transferred to an active circular-linear register 66 through an and gate 68.

Feed Rate Determination The function of the active circuitry is to provide the pulse outputs to the servo-mechanisms in accordance with the criteria previously described. Whether the interpolation is linear or circular, the feed rate control operates in the same manner. The feed rate determination will be generally described first and the linear and circular interpolation will be described in turn.

The feed rate number, contained in binary form in register S8, emerges during W1 word time with its least significant bit first. The feed rate number passes through a half adder or subtracter 70 which does not affect it. The feed rate number then passes to an and gate 72 which has as its second input the output of an and gate 74. The and gate 74 is conditioned by the W1 time signal and a signal from a free-running multivibrator '76. The free-running multivibrator is manually adjustable in output frequency and is used to broadly control the rate at which the circuit operates. Its setting acts as a multiplier for the feed rate number. The output of the multivibrator 76 is synchronized with the time of pulse occurrence of the other circuitry as determined by the master clock 40 in a synchronizer unit 78 which provides output to the and gate 74. When the synchronizer provides an output pulse, the and gate 74 provides an output at the following W1 time and thereby conditions the and gate 72 to pass the feed rate number.

The and gate 72 has output to a full adder 80 which, in addition to receiving the output of the register 58, receives the output of a fourth serial recirculating delay line register 82 of 80 bits in length. The register 82 is empty at the beginning of an active cycle. One of the functions of the adder is to add the feed rate number into the first word space of the register 82 with the least significant digit of the feed rate number being added to the least significant position of the W1 word space in the register S2. During each W1 word time, the feed rate number is added into the Wl space in the register 82. Overiiow from the register 82 is detected by sensing the condition of the carry flip-flop of the adder 80 at an appropriate point in the word time. The particular point is dependent upon the length of the feed rate number. If it contains bits or less, overow is detected by inspecting the carry flip-flop and the full adder at T11; if 11 bits at T12; if 12 bits at T13; and if 13 bits (maximum coded length) at T14. This technique is used in connection with variations in the operation of the subsequent pulse multiplier circuit in a manner that will be described.

Each time an overflow pulse occurs, it is fed to an adder control 84 which operates to condition the second input of the ,and gate 72 through the following W2, W3, and W4 word times. This allows the adder 80 to operate on the numbers contained in the W2, W3, and W4 times in the register 58 whether they be the DX, Dy, and Dz command numbers for linear interpolation or` the Xi and Y1 numbers for circular interpolation.

Linear Interpolation In linear interpolation, the numbers DX, Dy, and Dz are maintained in the W2, W3, and W4 spaces in the register 58. As they pass out of the register 58, they are fed through the half adder or subtracter 70, which is only operative to modify the number during circular interpolation, to the and gate 72. If an overflow from the W1 word space of register 82 has occurred immediately previously, the and gate 72 is conditioned and allows linear command numbers to pass to the full adder 80. There Dx is added into the W2 word space of register 82, Dy is added into the W3 word space of register 82, and DZ is added into the W4 word space of register 82. In FIGURE 1, the contents of the four word spaces of register 82 have been indicated as RFR (resultant feed rate), RX, Ry, and Rz.

The carry products which occur at W2 T20, W3 T20, and W4 T20 again represent the overflows of the three spaces in the register and these pulses are fed to a command pulse detector 82.

Since the three registers overflow in the same ratio as the three command numbers bear to one another, the pulses are produced at the output of the command pulse detetcor 82 at the W2, W3, and W4 word times in the ratio of the three numbers to one another. Thus, the first condition of the interpolator is satisfied.

The other requirement of the interpolator is that it terminate the pulse production when the number of pulses in each of the three pulse trains is equal to the command number. As the rate of pulse production in the three trains is in the ratio of the command numbers, it should be noted that this condition should occur approximately at the same time for all three pulse trains.

It is a characteristic of the binary number system that when a given number of n bits length is added to itself 2n times, a number of carries will be generated from the most significant digit of the number which is equal to the number itself. For example, if the binary number 101:5 is added to itself 23 times, a total of five carries from the third significant position will be generated. Therefore, in order to generate a sufiicient number of command pulses from a series of three command numbers, it is necessary to perform a number of additions equal to 2, where n equals the number of significant digits in the longest of the three numbers.

As has been noted, the three numbers are stored with their least significant digits (marker pulse) in the same time position in each word and with the most significant digit of the largest of the three numbers in the next to the last bit position (T19). Also, each of the three numbers carries a marker pulse as a substitute for its least significant digit.

The occurrence of a number of additions into the register 82 sufiicient to generate a number of command pulses equal to the command numbers is determined by observing the contents of the W2, W3, and W4 word time spaces of the register 82. When a sufficient number of additions have occurred, the contents of each of these word spaces in the register 82 will be zero since a binary number of n significant digits when multiplied by 2n provides a product in which the first n significant figures are zeros. Since the least significant bit of the number is a 1 (marker pulse), the product will have zeros in the first n significant places only after 2n multiplications.

Since the marker bit is not considered to be an actual part of the number, the true zero condition occurs when a "1 occurs in the most significant bit position (T19) preceded by zeros in all other bit positions. Under certain circumstances, the zero condition may occur when this marker l is in a lower bit position followed by all zeros as will be detailed in the subsequent description of the pulse multiplier circuitry.

The occurrence of this zero condition is sensed by a zero detector 84 which has input from an and gate 86. The gate 86 has inputs from the register 82 and the linear output of the active storage register 66. When the zero condition occurs, the zero detector provides an output pulse to an and gate 88 which has the linear signal as its other input. This provides an end-of-cut signal to the control logic section 62. A specific example will aid in visualizing the operation of the Zero detector 4 in terminating the addition of the contents of the register 58 to the register 82.

Assume DX=12=1 1 l 0 l 0 0 0 0 0 (in atenbit register) in converted form. There will then be a l in some position short of the most signiiicant in the register S2 until 24=16 additions have been made into it:

1.1110100000 Overflow 2.1101000000 3.1011100000 4.1010000000 5.1000100000 6.1111000000 7.1101100000 V 8.1100000000 9.1010100000 10.1001000000 11.1111100000 12.1110000000 13.1100100000 14.1011000000 15.1001100000, 16.1000000000 Circular Interpolation In circular interpolation, which may only be achieved by the preferred embodiment of the present system in two axes, the X and Y servo-mechanisms must be supplied with streams of pulses which are not uniformly spaced in time as in linear interpolation but which vary at sinusoidal rates. It should be noted that at the same time one train is achieving its maximum pulse rate, the other train is experiencing a minimum pulse rate; that is, the pulse rates of the two trains vary in accordance with sine and cosine functions. FIGURE 3 illustrates hypothetical X and Y command pulse trains which are generated for a circular cut beginning at a point in the second quadrant (-X, ,-l-Yi) and proceeding in a clockwise direction into a point in the iirst quadrant (-i-Xf, -i-Yf). First, it should be noted that the necessary pulse rate at any point in the train is inversely proportional to the appropriate coordinate of the radius vector at that point. That is, as the cut proceeds toward the point A where the X coordinate is Zero, the X pulse rate must increase as the primary component of the motion is in the X direction. Similarly, as point A is approached, the Y puise rate becomes minimal although the Y coordinate of the radius vector is at its maximum.

In the generation of a straight line cut, the command pulse trains were generated by adding a constant quantity repeatedly into an initially empty register and using the overflows of that register to actuate command pulses. In order to obtain Varying rates of pulses in the command trains for circular interpolation, it is necessary to vary the numbers which are repeatedly added into the initially empty register during the addition process. This is achieved by considering the numbers which are added into the register to be the equivalents of the coordinates of a radius vector. As the cut proceeds, these numbers are varied in the same manner that the radins vector varies. Thus, X1 and Yi, which are the coordinates of the initial radius vector, are first added into an initially empty section of a recirculating register. Each time an overflow occurs and a command pulse is generated, Xi or Y1 is modiiied by'adding or subtracting a l from it in order that it will continually represent the coordinates of the radius vector at the point at which the cut is being made. Thus, in the example of FIGURE 3, at the beginning ofthe cut each time an overflow occurs from the register which:

Xi is being added into, the Yi quantity is increased by 1, since the Y, component of the radius vector is increasing. Similarly, at the beginning of the cut illustrated in FIGURE 3, each overiiow from the register section which Yi is being added into actuates a circuit whichl decreases the Xi quantity by 1. When point A is reached, this action must be reversed and the X1 quantity must be increased by l each time an overow occurs while the Y1 quantity must be decreased by 1.

Since the X command pulse train must have a maximum pulse rate when X1 is large and a minimum pulse 'rate when Xi is small, and the Y command pulse rate must bear the same relation to Yi, the output of the register in which Xi is beingl added is used to generate the Y command train while the overflows of the register vin which Yi is being added is used to generate the X cornmand pulse train. This is in accordance with the mathematical concept that the slope of a circle is the negative reciprocal of the radius vector.

With reference to FIGURE 3, if motion to the right is considered to be in a positive direction for the X servomechanism and motion in an upward direction is taken to be a positive direction for the Y servo-mechanism, then the direction of the X servo-mechanism must change as Y, goes through 0 and the direction of the Y servomechanism must change as X1 goes through 0. The servomechanism incorporates mechanism for selecting the appropriate direction upon receipt of the signal from the controller circuitry.

In circular interpolation, the numbers X1 and Yi are maintained in the W2 and W3 spaces in register 58 and the feed rate number, FR, is maintained in the Wl space of that register. As the numbers pass out of the register 58, they are fed through the half adder or subtracter 70, which is initially inactive and only operates upon the number after the rst command pulses are generated by the number. The numbers then pass through the gates 71 to the full adder 80 where the numbers X1 and Y1 are added into the W2 and W3 word spaces of the register 82 if an overow has occurred in the W1 space as a result of the addition of the number FR into the W1 Word space of the register S2 in the same manner as was described for linear interpolation. The overows of the W2 and W3 word space register 82 are detected by the command pulse detector 36 in exactly the same manner as in linear interpolation and thereby generate command pulses along the appropriate axis. These command pulses are also fed back to` an and gate which has as its second input the circular output of the active storage register 66. The gate 100 provides the other input to y the half adder or subtracter 70. When a command pulse is generated and circular interpolation is occurring, the half adder or subtracter 70 operates to either add or subtract a "1 from Xi and Y1 during their passage through it following the generation of a command pulse. The information for this action is supplied to the half adder or subtracter 70 from an activev sign storage unit 102. This unit has inputs from a clockwise/counterclockwise storage unit 104, which has a. connection to the output of the gate 56, and receives and stores the sign of the feed rate number associated with a block of circular interpolation which constitutes the clockWise/counterclockwise sign.

Thel storage unitV 102 also has au input from the zero detector 84. During circular interpolation, the zero detector S4 receives the output of a gate 104 which senses theroutput of the half adder or subtracter 70. When the contents of either the W2 or W3 word spaces of the register 5S (X1 and Yi) are 0, following their passage through l the half adder or subtracter 70, the detector S4 provides a signal through a gate 106 to the active sign storage unit 102. This signal operates to change the signs of either one of the two radius vector components represented by X1 and Y1 depending upon the direction of the circular v cut and the previous sign of these two quantities. The

l. 3 either added or subtracted from the quantities X1 and F1 and also provide signs for the X and Y servo-mechanisms. This is done on the basis of ythe initial signs of X1 and Y1, the direction of cut as supplied from the clockwise/ counterclocltwise storage 194 and the quadrant change signal from the zero detector 84.

The output of the half adder or subtracter '70 is also fed to the comparator 54 which continually compares the X, and Y, quantities, as modied, with the contents of the W2 and W3 word times of the register 50 which co-ntains the Xf and Yf quantities. This comparison is made for both quantity and sign and when both units compare in both quantity and sign, the comparator 54 sends a signal to the control logic box 62 which halts the cut and transfers the next block of information from temporary storage to active storage.

Pulse Multiplication The output pulses from the command pulse detector 86, whether they be from a block of circular interpolation or linear interpolation pass to a pulse multiplier unit 110. The function of the pulse multiplier unit 11) is to provide either 1, 2, or 4 output pulses spread over a given i recirculation cycle for each pulse from the command pulse detector which it receives. Whether the output constitutes 1, 2, or 4 pulses for each input pulse received is dependent upon the length of the feed rate number associated with that block of information. The feed rate number has a maximum of 13 digits. If it does contain 12 digits, the pulse multiplier provides four output pulses for each input pulse received. If the feed rate number contains l1 digits, the pulse multiplier provides two output pulses for each input pulse received. If the feed rate number contains or fewer digits, the pulse multiplier provides one output pulse for each input pulse received.

The purpose of the pulse multiplier is to enable the preceding circuitry to operate at moderate speeds and yet provide a pulse output rate which is in excess of those speeds.

The pulse multiplier operates by sensing the length of the feed rate number as it is transferred from temporary to active storage through the gate 56. One of three combinations of flip-flops are set depending upon the length of the feed rate number. These condition gates allow 1, 2, or 4 output pulses to be provided in a recirculation cycle following the receipt of a pulse from the detector '86.

When the pulse multiplier circuitry is operative to provide a multiple output to the servo-mechanisms, the number of pulses dictated by the command numbers will be achieved proportionately more quickly and the pulse production process must be terminated proportionately sooner. This is done by making the zero detector 84 generate an end-of-cut signal for linear operation earlier than it would if no pulse multiplication were used. Accordingly, when there is no pulse multiplication, the endof-cut signal is generated when there are zeros in the first 18 bit positions of the contents of the W2, W3, and W4 sections of the register 82. When pulse multiplication by 2 is commanded, zeros in the first 17 bit positions will signal end-of-cut. When pulse multiplication is by 4, the cut is ended when zeros occur in the first 16 bit positions. By this early termination, the command numbers are divided by 2 or 4 to compensate for the later multiplication. A maximum of two pulses may be lost to the servomechanism in this process and the machine accuracy is accordingly lowered.

This early termination process does not affect circular cuts which are terminated upon coincidence of modified Xi and Y, with Xf and Yf, respectively.

Output Servo the sign signal provided by the controller. Such servo systems will not be described in detail here. Servos which are applicable for use with the present system are disclosed in U.S. Patent No. 2,537,427 and US. patent application No. 661,952, filed May 25, 1957, now Patent No. 3,011,110, and assigned to the assignee of the present application among others.

Having thus described our invention, we claim:

1. An electronic system for receiving numerical data and for supplying pulse trains to each of a plurality of servo-mechanisms operative to simultaneously move a common member along a plurality of non-coincident axes, each of said servo-mechanisms being responsive to its pulse train so as to move the member through a distance proportional to a number of pulses in said train at a rate proportional to the instantaneous density of said pulses in said train, said numerical information containing a plurality of blocks each associated with a particular motion of said membeijsaid blocks being divided into two types, linear and circular, the block type being represented by a coded symbol contained in said block, each block associated with a linear symbol containing a plurality of numbers which represent the distances of the end point of the path represented by said block from the position of the member immediately previous to the utilization of said block of information by the system, each block of information associated with a circular type cut containing two sets of numbers, each set representing the coordinates of one end point of a circular arc to be followed by the member with respect to the center ofthe circle, each block of information further including a number proportional to the rate at which the member is to follow the path indicated by such block, said system including a temporary storage unit including a plurality of temporary storage registers and a decoder including an adder, said decoder being operative, in association with the adder, to convert the information on the tape into a form proper for use in the subsequent circuitry; an active feed rate storage register for a number associated with the rate of motion; a feed rate summation storage register;

l means for repeatedly adding the contents of said feed rate storage register into said feed rate summation register operative to generate a signal each time an overow occurs from the most significant position of said summation register following an addition; a plurality of command active storage registers operative to receive the number associated with the termination point of the line for a linear block of information and beginning point of the circular arc for a circular block of information; a plurality of command summation registers; means for adding the contents of active command storage registers into said command summation registers upon the generation of a signal indicating an overflow from said feed rate summation register; means for delivering an integral number of pulses to one of said servo-mechanisms upon the occurrence of an overow from a command summation register associated with that servo-mechanism following an addition into such register; means operative during utilization of a block of information in the active circuitry associated with a linear motion of said member to terminate both addition processes upon the occurrence of a unique state in said command summation register; means operative during the utilization of a block of information associated with a circular cut in said active circuitry to modify the contents of one of said command active storage registers upon the occurrence of an overflow from the moet significant state of one of the command summation registers; and means operative during the utilization of a circular block of information in said active circuitry to terminate both addition processes upon the numbers in said command storage registers being modified so as to be f equal to the coordinates of the termination point of the l nisms which are operative to simultaneously move a member along mutually perpendicular paths, said numerical data comprising a plurality of blocks of information, each specifying a particular motion of said member, at least certain of said blocks being intended to produce a linear motion of said member and containing a plurality of numbers which represent the distances along the coordinate axes that said servo-mechanisms move in, from the position of the member previous to the utilization of such block of information to the desired position of said member subsequent to the utilization of said block of information, such block further containing a number proportional to the rate at which it is desired to move said member along its path, said system including an input unit operative to receive said numerical information, to establish electrical representations of said information, and to temporarily store that information; a feed rate active storage register operative to receive electrical representations from said input unit proportional to number in the block being utilized representing the rate at which the motion of the member along the path is to occur and to store said electrical representations; a feed lrate summation register; means for repeatedly adding the contents of said feed rate active storage register into said feed rate summation register to produce an output signal each time of said feed rate summation register following an addition into it; a plurality of command number storage registers operative to receive from said input section electrical representations proportional to the coordinates of end point motion associated with a particular block of information; a plurality of command summation registers equal in number to said command storage registers each associated with a particular servo-mechanism; means for adding the contents of said feed rate storage registers into said feed rate summation registers upon the occurrence of an output signal from said means for detecting overflows from said feed rate summation register; means for transmitting one or more pulses to a servo-mechanism associated with a particular command number summation register upon the generation of an overflow from the most significant stage of such command summation register following an addition into such register; and means for terminating the adidtion process upon the occurrence of a unique state of said command number summation registers, such unique state being the same for all blocks of information commending a linear motion.

3. An electronic system having as its input coded numerical information and being operative to provide a plurality of trains of pulses to a number of servo-mechanisms which are operative to simultaneously move a member along mutually perpendicular paths, said numerical data comprising a plurality of blocks of information, each specifying a particular motion of said member, at least certain of said blocks being intended to produce a linear motion of said member and containing a plurality of numbers which represent the distances along the c0- ordinate axes that said servo-mechanisms move in, from the position of the member previous to the utilization of such block of information to the desired position of said member subsequent to the utilization of said block of information, such block further containing a number proportional to the rate at which it is desired to move said member along its path, said system including an input unit operative to receive said numerical information, to establish electrical representations of said information, and toV temporarily store that information; a feed rate active storage register operative to receive electrical representations from said input unit proportional to a number in the block being utilized representing the rate at which the motion of the member along the path is to occur and to store said electrical representations; a feed rate summation register; means for repeatedly adding the contents of said feed rate active storage register into said feed rate i summation register to produce an output signal each time an overiiow is generated from the most significant stage Y an overflow is generated from the most significant stage of said feed rate summation register following an addition into it; a plurality of command number storage registers operative to receive from said input section electrical representations proportional to the coordinates of end point motion associated with a particular block of information; Ya plurality of command summation registers equal in number to said command storage registers each associated with a particular servo-mechanism; means for adding the contents of said feed rate storage registers into said feed rate summation registers upon the occurrence of an output signal from said means for detecting overfiows from said feed rate summation register; means for transmitting one or more pulses to a servo-mechanism associated with a particular command number summation register upon the generation of an overiiow from the most significant stage of such command summation register following an addition into such register; and means for terminating the addition process upon the occurrence of a unique state of said command number summation registers, such unique state being a function of the magnitude of said number representing the rate at which the motion of the member along the path is to occur,

4. A system having as its input coded numerical information and providing as its output pulse trains to a plurality of servo-mechanisms which are adapted to simultaneously provide motion of a member with respect to a tool along mutually perpendicular axes, such numerical data including a plurality of blocks of information, each block being associated with a particular motion to be performed by said member, at least certain of said blocks being related to a circular motion of said member and including two sets of numbers which represent the coordinates of the Vtwoend points of the circular path with respect to the center of such circle such block containing a number representing the rate of motion of said member along such circular path, such system including an input section operative to receive numerical data and establish electrical representations of such data ina form appropriate for use in the subsequent circuitry; an active feed rate storage register for receiving from the input circuit electrical representations proportional to the number representing the desired rate of motion of said member; a feed rate summation register; means for repeatedly adding the contents of said feed rate storage register into said feed rate summation register and to generate output signals upon the occurrence of an overflow in the most significant t stage of such summation register; a plurality of coordinate storage registers operative to receive electrical representations derived from the initial point coordinates of said circle; a plurality of coordinate summation registers each associated with a particular servo-mechanism; means for adding the contents of said coordinate storage registers into said coordinate feed rate registers upon the occurrence of an output signal from the means for detecting the overiiow of the feed rate summation register; means for transmitting pulse to the servo-mechanism associated with a particular coordinate summation register upon the generation of an overiiow from the most significant stage of such register; means for modifying the electrical representation of the coordinate number contained in the coordinate storage register associated with a particular coordinate summation register upon the occurrence of an overfiow from the most significant stage of another register; means for comparing the modified contents of said coordinate storage register with electrical representations of terminal points of the circular motion commanded by a particular information block and for terminating both addition processes upon such number being in coincidence; means for inspecting the contents of said coordinate storage registers and for changing the nature of the modification process to said numbers and the direction of motion of at least one of said servo-mechanisms upon the electrical representation in any of said coordinate storage registers being the electrical equivalent of a zero number.

5. An electronic system for use with servo-mechanisms, said system being operative to receive numerical data including blocks of infomation associated with particular paths to be followed by said servoJmechan-isms, each block containing at least two numbers representing coordinates of .a point on said path .taken along the axes which said servo-mechanisms may move and a code signal representing the nature of such path, either linear or nonlinear, said system being operative to generate pulse trains equal in number to said servo-mechanisms, eacll train containing la number of pulses proportional to the path distance along la particular coordinate, such pulses occurring at instantaneous rates which are proportional to the necessary motion rate of the associated servo-mechanisms at that instant, said system including: first registers, equal in number to said servo-mechanisms and operative to store said numbers; an adder; second summation registers equal in number to said servo-mechanisms; and a control unit operative to initially store said numbers in said first registers, repeatedly add the Icontents of said first registers into said second registers; means operative to generate Ia pulse in a particular pulse train when overflow occurs from the most significant stage of one of said second registers following :addition into that register, and means operative to terminate the .addition opera-tion upon the occurrence of a particular predetermined condition in said second registers for a block of information containing Ia linear code number and to modify the contents of one of said first registers each time a pulse is genera-ted in one of said pulse trains and to terminate the operation upon 4the occurrence of a predetermined condition in said first registers for a block of information containing a linear code number, such predetermined `condition of said first registers being introduced into .the system from said block of information.

6. A system operative to receive coded numerical information and to provide pulse trains to each of a first plurality of servo-mechanisms which are operative to move Ia common member simultaneously :along a first plurality of coordinates, such numerical information including a second plurality of numbers which is not greater than said first plurality, .such numbers representing the distances of a particular point on a curve to be followed by said member from -a set of coordinate axes, such system including: a first plurality of first registers one associated with each of said servo-mechanisms; an adder; a first plurality of second registers each associated with one of said servo-mechanisms; and a control for said system operative to initially store said first numbers in said rst registers, to repeatedly add the contents of said first registers into sai-d second registers, to deliver a pulse to one of said servo-mechanisms upon the occurrence of an overflow from the most significant stage of the second register associ-ated with said servo-mechanism following an addition into such second register, and to terminate said addition process upon Ithe occurrence of a num-ber of pulses of each of said trains sufficient to cause said servo-mechanism to move lthrough a distance equal to its coordinate contribution to the path being generated.

7. A system operative to receive coded numerical information and to supply pulse trains to each of a plurali-ty of servo-mechanisms which provide motion along a number of paths equal to the servo-mechanisms simultaneously, said numerical information including a plurality of blocks of information each associated with a particular path to be followed by said servo-mechanism, at least certain of said blocks containing at least two numbers which represent the coordinates of the end point of a particular path to be followed with respect to the axes of said various servo-mechanisms .and such coordinates being taken with respect to the position of said member prior to the utilization of such block of information, sia-id system including: a plurality o-f first registers equal in number to said servo-mechanisms; an adder; a plurality of second summation registers equal in number to said 'rst .registers; and a control operative to repeatedly add the contents of said first registers into said second registers, to deliver la pulse to one of said servo-mechanisms upon the occurrence of an overflow from the second register associated with such servo-mechanism, and to terminate the addition process upon the occurrence of an unique state in said second registers.

8. A system .operative to receive coded numerical information and to provide pulse trains to each of a first plurality of servo-mechanisms which are operative to move a common member simultaneously along a rst plurality of coordinates, such numerical information including a second plurality of numbers which is not greater than said first plurality, such numbers representing the distances of a particular point on `a curve to be followed by said member from a set of coordinate axes, such system including: a first plurality of first registers one associated with each of sai-d servo-mechanisms; an adder; -a first plurality of second registers each associa-ted with one of said servo-mechanisms; and a control for said system operative to initially store said first numbers in said first registers, to repeatedly add the contents of said first registers into said second registers, to deliver ia pulse to one of said 4servo-mechanisms upon the occurrence of an overflow 'from the most significant stage of the second register associated with said servo-mechanism following an addition into such second register, and to terminate s-aid addition process upon the occurrence of an unique state in said second registers.

9. A system operative to receive coded numerical information and to provide pulse trains to each of a plurality of servo-mechanisms which provide simultaneous motion along different coordinates, Ithe data including a plurality of blocks of information, each block containing information relating to a path to be followed by servomechanisms, said information including at least two numbers representing coordinates of a point on said path and a code sign indicating the nature of the path, either linear or non-linear, said system including: la plurality of first register sections equal in number to said servo-mechanisms 'and operative to receive said numbers; an adder; a plurality of second summation register sections; and a control for said system operative to repeatedly a-dd the contents of said first register sections into said second register sections, to generate a pulse in the train to one of said servo-mechanisms when an overflow occurs in the most signicant stage of one of said second register sections upon -addition into such register section, to h-alt said addition process for a block associated with the linear motion upon the occurrence of an unique state in said second register sections, and to halt the addition process for a block associated with a non-linear motion upon the occurrence of a predetermined state in said second register sections, the nature of said predetermined state bein-g contained in said block of information.

l0. An electronic system for use wi-th servo-mechanisms, said system being operative to receive numerical data including blocks of information associated with particular paths to be followed by said servo-mechanisms, each block containing at least two numbers 4representing coordinates of a point on said path taken along the axes which said servo-mechanisms may move and a code signal representing the nature of such path, either linear on non-linear, said system being operative to generate pulse trains equal in number to said servo-mechanisms, each train containing a number of pulses proportional to the path distance Ialong a particular coordinate, such pulses occurring at instantaneous rates which yare proportional to the necessary motion rate of the associated servo-mechanisms at that instant, said system including: first registers, equal in number to said servo-mechanisms and operative to store said numbers; an adder; second summation registers equal in number to said servo-mechanisms; and a control unit operative to initially store said numbers in said first registers, repeatedly Vadd the contents of said 19 first registers into `said second registers; :and means operative to generate la pulse in ya particular pulse train when overflow occurs from the most significant stage of one of said second registers following Iaddition into .that register.

11. A system for controlling the motion of a machine operative to receive numerical information relating to a particular motion and containing at least two numbers which constitute distances along separate coordinate aXes and information indicating whether the curve that such numbers relate to is linear or non-linear, and to generate trains of pulses equal in number to said axes each pulse in said trains being operative to cause movement an incremental distance along the axis with which said train is associated, including: first registers for storing said numbers; an adder; summation registers equal in number to said axes; and a control system operative to repeatedly add the contents of said first registers into said summation registers, to generate pulses in said trains upon the occurrence of an overflow from most significant stage of any of said summation registers, to modify the contents of said first registers upon the generation of a pulse in the event that the curve with which said numbers are associated is non-linear, and to terminate said addition upon the attaining of a certain condition programmed in the system through said numerical information, depending upon whether the curve is linear or non-linear respectively.

12. An electronic system for controlling motion having as its input numerical data and providing output to a plurality of servo-mechanisms, said data including a plurality of blocks of information each relating to a particular motion to be achieved by said servo-mechanisms each block including a plurality of numbers representing distances along the axes controlled by said servo-mechanisms from a particular point on a path to be followed by said servo-mechanisms to a reference point, which varies from block to block, said system including: first registers for receiving said numbers; an adder; summation registers equal in number to said servo-mechanisms; and a control system operative to repeatedly add the contents of said first registers into said summation registers, to provide at least one pulse to one of the servo-mechanisms upon the occurrence of an overflow from the most significant stage of a summation register, and to terminate said addition when a suicient number of pulses have been generated in each train to achieve the motion dictated by the block of information.

13. An electronic system operative to receive numerical data including at least a first plurality of numbers representative of distances along mutually perpendicular axes and a signal indicating whether a curve which said numbers relate to is linear or non-linear and to generate a first plurality of trains of pulses, including: first registers operative to receive said numbers; an adder; a rst plurality of second summation registers; and a control system operative to repeatedly add the contents of said first registers into said summation registers, to repeatedly modify the contents of said first registers in the event that the curve said numbers refer to is non-linear, and to generate a first plurality of trains of pulses under control of the overflows from said summation registers.

14. A system operative to receive numerical data including a plurality of commands representing distances along various coordinates and to generate a plurality of pulse trains equal in number to said commands, each containing a number of pulses which is proportional to one of the distances, said pulses in the various trains occurring at rates which are in the same ratio as the distances, said system including: means for storing the numerical representations of the command numbers; an adder; a summation register; and a control operative to repeatedly add said command numbers to separate sections of said summation register to generate at least one pulse in one of said pulse trains upon a generation of an overfiow from a section of said summation register associated with said pulse train, and to terminate the addition process upon the occurrence of the proper number of pulses in each of said trains.

15. A system operative to receive numerical data including data including at least two numbers representative of distances along mutually perpendicular axes and to generate trains of pulses equal in number to said number of axes, said system including: first registers to retain said numbers; an adder; summation registers equal in number to said axes; and a control operative to cause the contents of said first registers to be repeatedly added into said summation registers, to generate a pulse each time an overfiow occurs from the most significant digit of one of said summation registers, and to terminate the addition process upon the occurrence of a unique condition in at least one of said summation registers.

16. A system operative to receive numerical data including data including at least two numbers representative of distances along mutually perpendicular axes and to generate trains of pulses equal in number to said number of axes, said system including: first registers to retain said numbers; an adder; summation registers equal in number to said axes; and a control operative to cause the contents of said rst registers to be repeatedly added into said summation registers, to generate a pulse each time an overflow occurs from the most significant stage of one of summation registers, and to terminate the addition process upon the occurrence of zeros in a number of stages of summation registers equal to the number of digits in said numbers less one.

17. A system operative to receive numerical data including at least two numbers representative of distances along mutually perpendicular axes and to generate trains of pulses equal in number to said number of axes, said system including: means for operating upon said numbers so as to form modified numbers which are odd; first registers to retain such modified numbers; an adder, summation registers equal in number to said axes; and a control operative to cause the contents of said first registers to be repeatedly added into said summation registers, to generate a pulse each time an overflow occurs from the most significant digit of one of said summation registers, and to terminate the addition process upon the occurrence of zeros in all stages of the summation registers with the exception of the most significant stage.

18.An electronic system operative to receive numerical data including at least a first plurality of numbers representative of distances along mutually perpendicular axes, a signal indicating whether a curve which said numbers relate toy is linear or non-linear, and a set of numbers useful for the termination process in the event the curve is non-linear, and to generate a first plurality of trains of pulses, including: first registers operative to receive said numbers; an adder; a first plurality of second summation registers; and a control system operative to repeatedly add the contents of said first registers into said summation registers, to generate an output pulse in one of said trains upon the occurrence of an overflow from the most significant stage of one of said summation registers, to modify the contents of one of said first registers upon the occurrence of an overfiow from the most significant stage of the summation register associated with that register in the event that the curve of said number referred to is non-linear, to terminate the addition process upon coincidence because the numbers contained in said first registers and a set of numbers which relate to the termination process in the event the curve is nonlinear, and to terminate the addition process upon the occurrence of a unique condition in said summation registers in the event the curve is linear.

Rajchman Feb. 17, 1948 Harris et al. Feb. 10, 1959 

16. A SYSTEM OPERATIVE TO RECEIVE NUMERICAL DATA INCLUDING DATA INCLUDING AT LEAST TWO NUMBERS REPRESENTATIVE OF DISTANCES ALONG MUTUALLY PERPENDICULAR AXES AND TO GENERATE TRAINS OF PULSES EQUAL IN NUMBER TO SAID NUMBER OF AXES, SAID SYSTEM INCLUDING: FIRST REGISTERS TO RETAIN SAID NUMBERS; AN ADDER; SUMMATION REGISTERS EQUAL IN NUMBER TO SAID AXES; AND A CONTROL OPERATIVE TO CAUSE THE CONTENTS OF SAID FIRST REGISTERS TO BE REPEATEDLY ADDED INTO SAID SUMMATION REGISTERS, TO GENERATE A PULSE EACH TIME AN OVERFLOW OCCURS FROM THE MOST SIGNIFICANT STAGE OF ONE OF SUMMATION REGISTERS, AND TO TERMINATE THE ADDITION PROCESS UPON THE OCCURRENCE OF ZEROS IN A NUMBER OF STAGES OF SUMMATION REGISTERS EQUAL TO THE NUMBER OF DIGITS IN SAID NUMBERS LESS ONE. 